package adminService

import (
	"gin/chibuda/app/utils"
	myjwt "gin/chibuda/route/middleware"
	jwtgo "github.com/dgrijalva/jwt-go"
	"time"
)

func Login(data map[string]string) utils.Service {
	user , e := Db().Table("admin_user").Where("name",data["username"]).First()
	if e!=nil || user["status"]==nil || user["status"].(int64) !=  1 {
		return utils.Error("账号被禁用,或不存在")
	}
	if utils.Md5(data["password"] + user["solt"].(string)) != user["password"] {
		return utils.Error("密码输入错误")
	}
	Db().Table("admin_user").Where("name",data["username"]).Data( map[string]interface{}{"last_login_time":utils.Time()}).Update()
	token,_:=generateToken(user["id"],user["role_id"])
	return utils.Success(token)
}

// 生成令牌
func generateToken( userId,role_id interface{})  (string, error){
	j := &myjwt.JWT{
		[]byte("newtrekWang"),
	}
	claims := myjwt.CustomClaims{
		userId,
		role_id,
		jwtgo.StandardClaims{
			NotBefore: int64(time.Now().Unix() - 1000), // 签名生效时间
			ExpiresAt: int64(time.Now().Unix() + 3600 * 3), // 过期时间 一小时
			Issuer:    "newtrekWang",                   //签名的发行者
		},
	}
	return  j.CreateToken(claims)
}